package org.hy.persistence.group;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.hy.domain.group.GSalon;

/**
 * 沙龙映射器
 * @author xwm
 *
 */
public interface GSalonMapper {

	/**
	 * 添加沙龙
	 * @param GSalon沙龙对象
	 * @return
	 */
	int insertGSalon(GSalon GSalon);
	
	/**
	 * 添加沙龙报名者
	 * @param idGSalon 沙龙id
	 * @param idGm 组员id
	 * @return
	 */
	int insertRecuit(int idGSalon,int idGm);
	
	/**
	 * 添加沙龙参与者
	 * @param idGSalon 沙龙id
	 * @param idGm 组员id
	 * @return
	 */
	int insertJoiner(int idGSalon,int idGm);
	
	/**
	 * 更新沙龙,包括沙龙内容,
	 * @param GSalon沙龙对象
	 * @return
	 */
	int updateGSalon(GSalon GSalon);
	
	/**
	 * 删除沙龙
	 * @param idGSalon
	 * @return
	 */
	int deleteGSalon(int idGSalon);
	
	/**
	 * 删除沙龙报名者
	 * @param idRecuit 报名表中的id
	 * @return
	 */
	int deleteGSalonRecuit(int idRecuit);
	
	/**
	 * 删除沙龙参与者
	 * @param idJoiner 参与表中的id
	 * @return
	 */
	int deleteGSalonJoiner(int idJoiner);
	
	/**
	 * 查找沙龙
	 * @param id 沙龙id
	 * @return 沙龙对象
	 */
	GSalon findGSalonById(int id);
	
	/**
	 * 查找小组成员发布的沙龙列表
	 * @param idGm 用户idGm
	 * @param offset 偏移量
	 * @param size 数目
	 * @return
	 */
	List<GSalon> findGSalonByIdGm(@Param("idGm")int idGm,@Param("offset")int offset,@Param("size")int size);

	/**
	 * 查找小组的沙龙
	 * @param gid 小组id
	 * @param offset 偏移量
	 * @param size 数目
	 * @return 沙龙列表
	 */
	List<GSalon> findGSalonByGid(@Param("gid")int gid,@Param("offset")int offset,@Param("size")int size);

	/**
	 *  查找用户发表的沙龙列表，包含各个小组的沙龙列表
	 * @param uid 用户id
	 * @param offset 
	 * @param size
	 * @return 沙龙列表
	 */
	List<GSalon> findGSalonByUid(@Param("uid")int uid,@Param("offset")int offset,@Param("size")int size);
	
	/**
	 * 统计小组沙龙数目
	 * @param gid小组id
	 * @return
	 */
	int countGSalon(int gid);
	
	/**
	 * 统计沙龙的报名者和参与者人数,每一个沙龙有两个统计结果,报名人数和实际参与人数
	 * @param idsGSalon 沙龙id数组
	 * @return 列表大小是数组的两倍.
	 */
	List<Integer> countGSalonRecuitAndJoiner(int[] idsGSalon);
	
	
	/**
	 *  判断小组成员是否报名沙龙 
	 * @param idGSalons 沙龙id数组 
	 * @param idGm 成员id
	 * @return boolean列表.已报名为ture,否则为false
	 */
	List<Boolean> isRecuit(@Param("gSalon")int[] idsGSalon,@Param("idGm")int idGm);

	/**
	 *  判断小组成员是否实际参与沙龙 
	 * @param idGSalons 沙龙id数组 
	 * @param idGm 成员id
	 * @return boolean列表.已报名为ture,否则为false
	 */
	List<Boolean> isJoiner(@Param("gSalon")int[] idsGSalon,@Param("idGm")int idGm);

}
